package com.ziki.account.test;

import cn.hutool.core.util.StrUtil;
import lombok.Getter;

import java.text.MessageFormat;

/**
 * 自定义业务异常
 */
public class CustomException extends RuntimeException {

    /**
     * 异常码
     */
    @Getter
    private String code;

    /**
     * 异常信息
     */
    private String msg;

    /**
     * 异常参数
     */
    @Getter
    private Object[] msgParams;

    /**
     * 将exceptionConstant国际化
     *
     * @param infoEnum 异常枚举
     */
    public CustomException(CustomExceptionInfoEnum infoEnum) {
        this.code = infoEnum.getCode();
        this.msg = infoEnum.getName();
    }

    /**
     * 将exceptionConstant国际化
     *
     * @param infoEnum  异常常量
     * @param msgParams 参数
     */
    public CustomException(CustomExceptionInfoEnum infoEnum, Object... msgParams) {
        this.code = infoEnum.getCode();
        this.msg = infoEnum.getName();
        this.msgParams = msgParams;
    }

    /**
     * @return 返回国际化后的异常信息
     */
    @Override
    public String getMessage() {
        if (StrUtil.isNotBlank(this.msg)) {
            if (msgParams!=null && msgParams.length > 0) {
                return MessageFormat.format(msg, msgParams);
            }
        }
        return this.msg;
    }
}
